package simple.cat.server;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

/**
 * @author zheng9feng
 * @Description 通用请求对象, 用于封装输入流和请求数据
 * @Date 2020/12/25 07:22
 */
public class Request {
	/**
	 * 请求方式
	 */
	private String method;
	/**
	 * 请求路径
	 * 如: /;/halo;/
	 */
	private String url;
	
	/**
	 * 将输入流封装在请求对象
	 */
	private InputStream inputStream;
	
	public Request() {
	}
	
	public Request(InputStream inputStream) {
		this.inputStream = inputStream;
		
		// 根据输入流解析报文,封装请求方式和请求路径
		// 解析请求行(第一行),封装请求方法
		// 第第一行的思路:根据换行符\n对请求进行分割
		try {
			int available = 0;
			while (available == 0) {
				available = inputStream.available();
			}
			
			byte[] requestDatagram = new byte[available];
			inputStream.read(requestDatagram);
			String data = new String(requestDatagram, StandardCharsets.UTF_8);
			String[] dataArray = data.split("\\n");
			// 请求行
			String requestLine = dataArray[0];
			String[] requestLineArray = requestLine.split(" ");
			this.method = requestLineArray[0];
			//eg: / 或 /index.html
			this.url = requestLineArray[1];
			System.out.println("----------->当前请求的url为:" + url);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public String getMethod() {
		return method;
	}
	
	public void setMethod(String method) {
		this.method = method;
	}
	
	public String getUrl() {
		return url;
	}
	
	public void setUrl(String url) {
		this.url = url;
	}
}
